package com.noahplat.user.service;

import com.noahplat.common.utils.Result;
import com.noahplat.user.pojo.User;
import com.noahplat.user.utils.PasswordDao;
import com.noahplat.user.utils.UserDao;

/**
 * 作者：李景星
 * 描述：用户逻辑层
 * 时间：2020-10-31
 */
public interface UserService {
    /**
     * 作者：李景星
     * 描述：通过用户名查询用户信息
     * 时间：2020-10-31
     *
     * @param username
     * @return
     */
    Result<User> queryUserByUsername(String username);

    //修改用户信息-用户名称，邮箱
    Result updateUserInfo(String name, String email,String phone, Long uid);

    //修改账户密码
    Result updatePassword(String oldPassword, String password, Long uid);

    //用户注册
    Result register(UserDao userDao);

    //根据id修改账户信息
    Result updateUserById(User user);

    //根据ID查询用户信息
    Result findUserById(Long id);

    //重置密码
    Result resetPassword(PasswordDao passwordDao);

    //更新账户头像
    Result updateAvatar(String avatar, Long uid);

    //更新手机号码
    Result updatePhone(String phone, String smsCode, Long uid);

    /**
     * 条件查询用户信息
     * @param page
     * @param limit
     * @param stid
     * @param acctid
     * @param name
     * @return
     */
    public Result getUser(Integer page,Integer limit,Long stid,Long acctid,String name);

    /**
     * 根据ID查询用户信息
     * @param id
     * @return
     */
    public Result getUserById(Long id);

    /**
     * 修改用户信息
     * @param user
     * @return
     */
    public Result updateUserRoleById(User user) ;

    /**
     * 根据ID删除角色
     */
    public Result delUser(Long[] id);

    /**
     * 添加用户
     * @param user
     * @return
     */
    public Result addUser(User user);

    /**
     * 通过手机号查找用户
     * @param phone
     * @return
     */
    public Result getUserByPhone(Long stid,String phone);

    /**
     * 分页查询企业管理账户
     * @param stid
     * @param page
     * @param limit
     * @return
     */
    public Result getProUser(Long stid,Integer page,Integer limit);

    /**
     * 初始化管理用户
     * @param user
     * @return
     */
    public Result addAdminUser(User user);

    /**
     * 查询用户的数量
     * @return
     */
    public Result getCount();

}
